setWindowIcon(_theme->applicationIcon());
if (!ConfigFile().exists()) {
- setApplicationName(_theme->appNameGUI());
- QString legacyDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME;
-
- if (legacyDir.endsWith('/')) {
- legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move.
- }
- setApplicationName(_theme->appName());
- if (QFileInfo(legacyDir).isDir()) {
- auto confDir = ConfigFile().configPath();
-
- // macOS 10.11.x does not like trailing slash for rename/move.
- if (confDir.endsWith('/')) {
- confDir.chop(1);
- }
-
- qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir;
-
- if (!QFile::rename(legacyDir, confDir)) {
- qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << legacyDir << "to" << confDir << ")";
-
- // Try to move the files one by one
- if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) {
- const QStringList filesList = QDir(legacyDir).entryList(QDir::Files);
- qCInfo(lcApplication) << "Will move the individual files" << filesList;
- for (const auto &name : filesList) {
- if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) {
- qCWarning(lcApplication) << "Fallback move of " << name << "also failed";
- }
- }
- }
- } else {
-#ifndef Q_OS_WIN
- // Create a symbolic link so a downgrade of the client would still find the config.
- QFile::link(confDir, legacyDir);
-#endif
- }
+ if (const auto genericConfigLocation = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME;
+ setupConfigFolderFromLegacyLocation(genericConfigLocation)) {
+ qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << genericConfigLocation << "failed.";
}
} else {
- setupConfigFile();
+ if (const auto appDataLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
+ setupConfigFolderFromLegacyLocation(appDataLocation)) {
+ qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << appDataLocation << "failed.";
+ }
}
- if (_theme->doNotUseProxy()) {
- ConfigFile().setProxyType(QNetworkProxy::NoProxy);
- for (const auto &accountState : AccountManager::instance()->accounts()) {
- if (accountState && accountState->account()) {
- accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy);
- }
- }
+ // try to migrate legacy accounts and folders from a previous client version
+ // only copy the settings and check what should be skipped
+ if (ConfigFile().exists() && !configVersionMigration()) {
+ qCWarning(lcApplication) << "Config version migration was not possible.";
}
parseOptions(arguments());
setupLogging();
setupTranslations();
- // try to migrate legacy accounts and folders from a previous client version
- // only copy the settings and check what should be skipped
- if (!configVersionMigration()) {
- qCWarning(lcApplication) << "Config version migration was not possible.";
- }
-
ConfigFile cfg;
{
auto shouldExit = false;
_gui->setupCloudProviders();
#endif
+ if (_theme->doNotUseProxy()) {
+ ConfigFile().setProxyType(QNetworkProxy::NoProxy);
+ for (const auto &accountState : AccountManager::instance()->accounts()) {
+ if (accountState && accountState->account()) {
+ accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy);
+ }
+ }
+ }
_proxy.setupQtProxyFromConfig(); // folders have to be defined first, than we set up the Qt proxy.
connect(AccountManager::instance(), &AccountManager::accountAdded,
}
}
-void Application::setupConfigFile()
+bool Application::setupConfigFolderFromLegacyLocation(const QString &legacyLocation) const
{
// Migrate from version <= 2.4
setApplicationName(_theme->appNameGUI());
QT_WARNING_POP
setApplicationName(_theme->appName());
- auto oldDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
-
- // macOS 10.11.x does not like trailing slash for rename/move.
- if (oldDir.endsWith('/')) {
- oldDir.chop(1);
+ auto legacyDir = legacyLocation;
+ if (legacyDir.endsWith('/')) {
+ legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move.
}
- if (!QFileInfo(oldDir).isDir()) {
- return;
+ if (!QFileInfo(legacyDir).isDir()) {
+ return false;
}
auto confDir = ConfigFile().configPath();
-
- // macOS 10.11.x does not like trailing slash for rename/move.
if (confDir.endsWith('/')) {
confDir.chop(1);
}
- qCInfo(lcApplication) << "Migrating old config from" << oldDir << "to" << confDir;
- if (!QFile::rename(oldDir, confDir)) {
- qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << oldDir << "to" << confDir << ")";
-
- // Try to move the files one by one
+ qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir;
+ if (!QFile::rename(legacyDir, confDir)) {
+ qCWarning(lcApplication) << "Failed to move the old config directory" << legacyDir << "to new location" << confDir;
if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) {
- const QStringList filesList = QDir(oldDir).entryList(QDir::Files);
- qCInfo(lcApplication) << "Will move the individual files" << filesList;
+ const QStringList filesList = QDir(legacyDir).entryList(QDir::Files);
+ qCInfo(lcApplication) << "Will move the individual files:" << filesList;
+ auto setupCompleted = false;
for (const auto &name : filesList) {
- if (!QFile::rename(oldDir + "/" + name, confDir + "/" + name)) {
- qCWarning(lcApplication) << "Fallback move of " << name << "also failed";
+ if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) {
+ qCDebug(lcApplication) << "Fallback move of " << name << "also failed";
+ continue;
}
+ setupCompleted = true;
+ qCInfo(lcApplication) << "Move of " << name << "succeeded.";
}
+ return setupCompleted;
}
} else {
#ifndef Q_OS_WIN
// Create a symbolic link so a downgrade of the client would still find the config.
- QFile::link(confDir, oldDir);
+ return QFile::link(confDir, legacyDir);
#endif
}
}